<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //设计模式: 在已有js语法的基础上, 进行语法整合(设计), 形成一个固定模式(用法), 每个设计模式都是为了解决某种问题.

        //其他设计模式: 工厂模式, 目的是为了批量创建对象.
        //设计模式一: 单例模式 , 为了实现只创建一个对象.

        var SingleTon = (function(){
            function Tank(){
                this.dom = null;//保存dom节点
                this.speed = 0;//速度
                this.color = '';//颜色
                this.run = function(){}
            }

            var instance = null;//保存实例化的对象

            return {
                //getInstance:function(){
                getInstance(){ //当对象的某个属性的值是个函数时, 可以简写为 属性(){}
                    // if( /* 如果已经实例化了一个对象 */ ){
                    //     return /* return 已经实例化的那个对象, 不再重新创建对象 */
                    // }else{
                    //     return  /* 创建一个新对象 , 返回 */
                    // }

                    // if( instance ){
                    //     return instance;
                    // }else{
                    //     return instance = new Tank();
                    // }

                    // return instance?instance:(instance = new Tank())
                    
                    return instance || (instance = new Tank())
                }
            }
        })()


        var a = SingleTon.getInstance();
        var b = SingleTon.getInstance();
        var c = SingleTon.getInstance();

        console.log(a,b,c);
        console.log(a==b);
        console.log(a==c);
        console.log(b==c);
        


    </script>
</body>
</html>